package com.prueba.client.interfaz.grillas;

import com.prueba.client.datosYlogica.GestorLogin;
import com.prueba.client.datosYlogica.GestorSecciones;
import com.prueba.client.datosYlogica.GestorStakeholders;
import com.prueba.client.interfaz.layouts.InterfazPrincipal;
import com.prueba.client.interfaz.layouts.PanelEditor;
import com.prueba.compartido.Seccion;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.EditorExitEvent;
import com.smartgwt.client.widgets.grid.events.EditorExitHandler;
import com.smartgwt.client.widgets.tree.TreeGrid;
import com.smartgwt.client.widgets.tree.TreeGridField;
import com.smartgwt.client.widgets.form.fields.*; 

public class TreeGridEstadoDelDocumento extends TreeGrid implements EditorExitHandler{
	public static TreeGridEstadoDelDocumento getInstance(){
		if (singleton==null){
			singleton=new TreeGridEstadoDelDocumento();
		}
		return singleton;
	}
	static private TreeGridEstadoDelDocumento singleton=null;

	private TreeGridEstadoDelDocumento(){
		 super();
		  //Parametros de la grilla  
	     this.setNodeIcon("vista.png");   
	     this.setFolderIcon("vista.png");       
	     this.setCanSort(false);
	     this.setWidth100();  
	     this.setHeight100(); 
	     this.setOverflow(Overflow.AUTO);	       
	    
	     //Campos de la grilla
	     TreeGridField titulo = new TreeGridField("titulo", "Titulo de seccion",150);   
	     	titulo.setFrozen(true); 
	     	titulo.setCanEdit(false);

	     TreeGridField tipo = new TreeGridField("tipo","Tipo", 100);   
		     	tipo.setCanEdit(false);
		     	tipo.setValueMap(Seccion.TIPOS_SECCIONES);
		     	
		 
		 TreeGridField costo = new TreeGridField("costo","Costo", 100); 
		     	costo.setCanEdit(true);
		     	costo.setEditorType(new SpinnerItem());  
		        costo.setType(ListGridFieldType.INTEGER);//Falta restriccion mayor a 0.
		     
		        	
	     TreeGridField estado = new TreeGridField("estado","Estado", 100);   
	     //estado.setValueMap(Seccion.ESTADOS_SECCIONESDEVISTAS);
	     estado.setCanEdit(true);
		 TreeGridField editar = new TreeGridField("editar","Editar");  
		 
	     this.setFields(titulo,tipo,costo,estado,editar);

	     this.setShowRecordComponents(true);          
	     this.setShowRecordComponentsByCell(true); 
	     this.setRecordComponentHeight(18);
	     this.addEditorExitHandler(this);
	     
	    
	     this.setEditByCell(true);
	     
	     //this.setDataSource(GestorSecciones.getInstance());
	     GestorSecciones.getInstance().setListGrid(this);
		 this.setAutoFetchData(true); 
	}
	
	@Override
	public void onEditorExit(EditorExitEvent event) {
		
		if(event.getColNum()==3){//estado de la seccion
			GestorSecciones.getInstance();
			GestorSecciones.editarEstadoSeccion(event.getRecord().getAttribute("nivel"), (String)event.getNewValue());
		}else
			if(event.getColNum()==2){//costo de la seccion
				GestorSecciones.getInstance();
				GestorSecciones.editarCostoSeccion(event.getRecord().getAttribute("nivel"), (Integer)event.getNewValue());
			}
	}	
	
	@Override
	protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {  
  	  
        String fieldName = this.getFieldName(colNum);  

        if (fieldName.equals("editar")) {  
            IButton button = new IButton();                  
            button.setIcon("editar.gif");  
            //button.setTitle("Ver");  
            button.addClickHandler(new ClickHandler() {  
                @Override
				public void onClick(ClickEvent event) {  
                	//InterfazPrincipal.getInstance().seccionInicio.setExpanded(false);
                	InterfazPrincipal.getInstance().seccionPrincipal.setExpanded(false);
                	//Obtenemos el titulo de la seccion sin espacios:
                    String tituloSeccion = record.getAttribute("titulo").replaceAll(" ","");
                    PanelEditor.getInstance().setContentsURL("http://localhost:8080/xwiki/bin/"+GestorLogin.getEspacio()+"/"+GestorLogin.getPagina()+ "#H" + tituloSeccion);
                	InterfazPrincipal.getInstance().seccionEditor.setExpanded(true);
                }  
            });  
            return button;  
        } else {  
            return null;  
        }  
	}  
}